﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos;
using System.Runtime.InteropServices;


namespace RMA.Pantallas
{
    public partial class frmCatUsuarios : Form
    {
        private string strUser = "";
        private string strPasswd = "";

        [DllImport("user32.dll")]
        static extern bool AnimateWindow(IntPtr hwnd, uint dwTime, uint dwFlags);

        public class WinApi
        {
            public static int GWL_EXSTYLE = -20;
            public static int WS_EX_LAYERED = 0x80000;
            public static int LWA_ALPHA = 0x2;
            [DllImport("user32")]
            public static extern int SetLayeredWindowAttributes(IntPtr hWnd, byte crey, byte alpha, int dwFlags);
            [DllImport("user32")]
            public static extern int GetLayeredWindowAttributes(IntPtr hWnd, byte crey, out byte alpha, int dwFlags);
            [DllImport("user32")]
            public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
            [DllImport("user32")]
            public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
        }
        void mkwndtrans(IntPtr hWnd, int num)
        {
            int oldWinStyle = WinApi.GetWindowLong(hWnd, WinApi.GWL_EXSTYLE);
            WinApi.SetWindowLong(hWnd, WinApi.GWL_EXSTYLE,
            num < 255 ? oldWinStyle | WinApi.WS_EX_LAYERED :
            oldWinStyle & WinApi.WS_EX_LAYERED);
            WinApi.SetLayeredWindowAttributes(hWnd, 0, (byte)num, WinApi.LWA_ALPHA);
        }
        enum AnimateWindowFlags : uint
        {
            AW_HOR_POSITIVE = 0x00000007,
            AW_HOR_NEGATIVE = 0x00000002,
            AW_VER_POSITIVE = 0x00000004,
            AW_VER_NEGATIVE = 0x00000008,
            AW_CENTER = 0x00000010,
            AW_HIDE = 0x00010000,
            AW_ACTIVATE = 0x00020000,
            AW_SLIDE = 0x00040000,
            AW_BLEND = 0x00080000
        }

        public frmCatUsuarios()
        {
            InitializeComponent();
        }
        public frmCatUsuarios(string _strUser, string _strPasswd)
        {
            strPasswd = _strPasswd;
            strUser = _strUser;
            InitializeComponent();
        }

        private void frmCatUsuarios_Load(object sender, EventArgs e)
        {
            CargaUsuarios();
        }
        public void CargaUsuarios()
        {
            Manejador_Usuarios objUser = new Manejador_Usuarios();
            DataTable dtUsuarios = null;

            try
            {
                dtUsuarios = objUser.RegresaCatalogoUsuarios();
                dgvUsuarios.AutoGenerateColumns = false;
                dgvUsuarios.DataSource = dtUsuarios;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void dgvUsuarios_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            string strId = dgvUsuarios.Rows[e.RowIndex].Cells[0].Value.ToString().Trim();
            lblId.Text = strId;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            bool modifica = false;
            Manejador_Usuarios objUser = new Manejador_Usuarios();

            if(lblId.Text != "")
            {
                if (MessageBox.Show("Desea Eliminar el usuario?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    modifica = objUser.ModificaStatusUsuario(int.Parse(lblId.Text));

                    if (modifica)
                    {
                        MessageBox.Show("Registro Eliminado", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    else
                    {
                        MessageBox.Show("No se pudo Elminar el registro, intente de nuevo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                }
                else
                {
                    MessageBox.Show("Operacion Cancelada", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                frmCatUsuarios_Load(sender, e);
            }
            else
            {
                MessageBox.Show("Debe seleccionar registro para poder eliminarlo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
            

            
           
        }

        private void dgvUsuarios_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int idUsr = int.Parse(dgvUsuarios.Rows[e.RowIndex].Cells[0].Value.ToString());
            string Usuario = dgvUsuarios.Rows[e.RowIndex].Cells[1].Value.ToString();
            string Nombre = dgvUsuarios.Rows[e.RowIndex].Cells[2].Value.ToString();
            string Contraseña = dgvUsuarios.Rows[e.RowIndex].Cells[3].Value.ToString();
            string Correo = dgvUsuarios.Rows[e.RowIndex].Cells[5].Value.ToString();
            string Puesto = dgvUsuarios.Rows[e.RowIndex].Cells[6].Value.ToString();
            


            frmModificaUsuarios frmModUsr = new frmModificaUsuarios(idUsr, Usuario, Nombre, Contraseña, Correo, Puesto);
            AnimateWindow(frmModUsr.Handle, 250, (uint)AnimateWindowFlags.AW_CENTER);
            frmModUsr.ShowDialog();

            CargaUsuarios();

        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            frmAgregaUsuario frmAU = new frmAgregaUsuario();
            AnimateWindow(frmAU.Handle, 250, (uint)AnimateWindowFlags.AW_CENTER);
            frmAU.ShowDialog();

            CargaUsuarios();
        }

        private void btnPermisos_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow dgv in dgvUsuarios.SelectedRows)
            {
                if (dgvUsuarios.SelectedRows.Count == 1)
                {
                    frmPermisosUsuarios frmP = new frmPermisosUsuarios(7, dgv.Cells[1].Value.ToString(), dgv.Cells[3].Value.ToString());
                    AnimateWindow(frmP.Handle, 250, (uint)AnimateWindowFlags.AW_CENTER);
                    frmP.ShowDialog();
                }
                else
                {
                    if (dgvUsuarios.SelectedRows.Count > 1)
                    {
                        MessageBox.Show("Solo se puede modificar un usuario por vez", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        if (dgvUsuarios.SelectedRows.Count == 0)
                        {
                            MessageBox.Show("Seleccione usuario para modificar permisos", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                           
                        }
                    }
                    
                }
            }
            
        }
    }
}
